package com.redhat.ceylon.common.test;
import java.io.File;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import com.redhat.ceylon.common.config.Authentication;
import com.redhat.ceylon.common.config.CeylonConfig;
import com.redhat.ceylon.common.config.CeylonConfigFinder;
import com.redhat.ceylon.common.config.Proxies;
import com.redhat.ceylon.common.config.Proxies.Proxy;
public class ProxyTool {
public static void main(String[] args) throws Exception {
if (args.length != 3) {
usage("Wrong number of arguments");
}
String mode = args[0];
File configFile = new File(args[1]);
if (!configFile.exists()) {
usage("Config file doesn't exist");
return;
}
final URL url;
try {
url = new URL(args[2]);
} catch (MalformedURLException e) {
usage("Malformed URL");
return;
}
CeylonConfig config = CeylonConfigFinder.loadConfigFromFile(configFile);
Authentication auth = Authentication.fromConfig(config);
Proxy proxy = Proxies.withConfig(config).getProxy();
final URLConnection conn;
switch (mode){
case "proxy":
java.net.Proxy netProxy = auth.getProxy();
if (netProxy != null) {
conn = url.openConnection(netProxy);
} else {
conn = url.openConnection();
}
break;
case "install":
auth.installProxy();
conn = url.openConnection();
break;
default:
throw new RuntimeException("Unsupported mode");
}
InputStream in = conn.getInputStream();
try {
int ch = in.read();
while (ch != -1) {
System.out.append((char)ch);
ch = in.read();
}
} finally {
in.close();
}
}
private static void usage(String error) {
if (error != null) {
System.err.println(error);
}
System.err.println("Expect 3 arguments: proxy|install <configfile> <url>");
System.exit(1);
}
}